/*********************************************************************************
//                      Venus Game Engine
// This software is supplied under the terms of a license agreement or
// nondisclosure agreement with Venus Game Technologies and may not 
// be copied or disclosed except in accordance with the terms of that 
// agreement.
//      Copyright(c) 2003-2014 Venus.PK, All Right Reversed.
//	VEngineBase.h
//	Created: 2014-1-18   13:41
//
**********************************************************************************/
#ifndef __VENGINEBASE_H__
#define __VENGINEBASE_H__
#pragma once

#include "VEngineNames.h"




#define VSUPPORT_D3D11_TESSELLATION 0

#define VEDITOR 1
#define VRENDER_ES 0		// for simple render




class VRenderInterface;
class VRender;
class VEngine;
class VMaterialLibrary;
struct VWorld;
class VApplication;

// Venus engine environment
struct VEngineEnv
{
	inline VEngineEnv():Engine(NULL),App(NULL),RI(NULL),Render(NULL),MaterialLib(NULL),World(NULL),FrameDeltaTime(0.0f),FrameCurrTime(0.0f){}
	VEngine* Engine;
	VApplication* App;
	VStackMemoryPool* MainStackPool;
	VRenderInterface* RI;
	VRender* Render;
	VMaterialLibrary* MaterialLib;

	VWorld* World;

	UINT Frame;
	float FrameDeltaTime;
	float FrameCurrTime;
};

VCoreApi extern VEngineEnv VEnv;

#endif